package controllers;

import java.util.List;
import views.html.*;
import models.Usuario;
import models.dao.DAOUsuario;
import play.data.Form;
import play.mvc.*;

public class CtrlUsuario extends Controller{
	
	private static Form<Usuario> formUsuario = new Form<Usuario>(Usuario.class);
	
	//Listar Usuarios
	@Security.Authenticated(Seguranca.class)
	public static Result listar(){
		DAOUsuario dao = new DAOUsuario();
		List<Usuario> usuario = dao.listar();
		
		return ok(views.html.usuario.listar.render(usuario));	
	}
	
	//Inserir um novo Usuario
	@Security.Authenticated(Seguranca.class)
	public static Result inserir(){
		return ok(views.html.usuario.inserir.render(formUsuario));
	}
	
	//Salvar o novo Usuario no banco de dados
	public static Result salvarInserir(){
		DAOUsuario dao = new DAOUsuario();
		Form<Usuario> form = formUsuario.bindFromRequest();
		
		if(form.hasErrors()){
			return ok(views.html.usuario.inserir.render(form));
			
		} else{
			Usuario usu = form.get();
			dao.inserir(usu);
			return redirect(routes.CtrlUsuario.listar());
		}
	}
	
	//Editar o Usuario
	@Security.Authenticated(Seguranca.class)
	public static Result editar(){
		Form<Usuario> form = formUsuario.bindFromRequest();
		return ok(views.html.usuario.editar.render(form));
	}
	
	//Salvar a edição do Usuario no banco de dados
	public static Result salvarEditar(){
		DAOUsuario dao = new DAOUsuario();
		Form<Usuario> form = formUsuario.bindFromRequest();
		
		if(form.hasErrors()){
			return ok(views.html.usuario.editar.render(form));
			
		}else{
			Usuario usu = form.get();
			dao.atualizar(usu);
			return redirect(routes.CtrlUsuario.listar());
		}
	}
	
	//Deletar o Usuario
	public static Result deletar(){
		Form<Usuario> form = formUsuario.bindFromRequest();
		Usuario usu = form.get();
		DAOUsuario dao = new DAOUsuario();
		dao.deletar(usu);
		
		return redirect(routes.CtrlUsuario.listar());
	}
}
